Binary correlation is a technique for determining how closely one sequence of data matches another. The binary correlation function for two binary sequences is defined by the following equation: ##EQU1## where a and b are sequences comprising n bits, each bit having a value of "0" or "1."
As equation (1) indicates, in binary correlation, an exclusive OR operation is performed bit by bit between the two sequences a and b. Each exclusive OR operation generates either a "zero" or a "one." The number of resulting "zeros" are summed. A comparison of the number of "zeros" against the number of bits (n) in each of the binary sequences indicates how closely the two sequences match.
In a typical application, such as spread spectrum communications, pattern/character recognition, or radar processing, binary correlation can be used to process a continuous binary data stream in order to find a particular data pattern corresponding to a fixed reference sequence. Referring to equation (1), one of sequences a and b can be the fixed reference sequence and the other can be the corresponding data pattern. In order to ensure that the correct data pattern has been found, the length n of the sequences should be maximized.
Although devices have been previously developed to perform binary correlation, these prior binary correlators have been problematic for numerous reasons. For example, in some binary correlator applications, there are multiple samples per bit of data in a binary data stream. In such cases, prior binary correlators could be used in one of several ways. According to a first way, one sample was arbitrarily selected for each data bit in order to generate a sample data sequence to be compared against the reference sequence. This first way was undesirable because it discarded a number of samples which may have contained useful information.
Under a second way, a separate binary correlator was provided for each sequence of related samples. For example, if there were two samples per input data bit, two separate binary correlators were used. One correlator received the first sample for each bit and the other correlator received the second sample. This second way was undesirable since multiple binary correlators were required, thereby increasing the cost of implementation.
According to yet a third way, all samples were input into the same binary correlator to produce a number of outputs. However, only a portion of these outputs were used in any given clock period, thereby, in effect, reducing the length of the reference sequence over which the binary correlator operated.